public class Test {
    public static void main(String[] args) {
        //多线程进阶->常见锁策略

        //乐观锁:先预测一下,如果锁冲突概率低,就少做处理,
        //悲观锁:先预测一下,锁冲突概率高,就多做处理

        //重量级锁:做的处理多
        //轻量级锁:做的处理少

        //自旋锁:线程进行持续等待,当可以进行加锁时,可以最快进行加锁,消耗cpu
        //挂起等待锁:线程被阻塞,当被唤醒时(需要一定时间),来进行加锁,可以不参与调度

        //可重入锁:一个线程针对这个锁,可以进行两次加锁,不会发生死锁现象
        //不可重入锁:一个线程针对一个锁,不能进行多次加锁,否则会发生死锁问题

        //公平锁:若干线程中,谁等待的时间最长,谁优先获取锁
        //非公平锁:若干线程中,无关等待时间,随机挑选线程获取锁

        //读写锁:多线程之间,进行读操作时,不会发生互斥,但数据的写入与读的操作会发生互斥

        //锁升级:偏向锁(首先见一个假锁,当发现出现锁冲突时,升级变成) -> 轻量级锁(冲突进一步升级) ->重量级锁

        //锁粗化:有些逻辑需要进行多次加锁,编译器会自动把多次细粒度的锁合并为一次粗粒度的锁

        //CAS:compare 和 swap 比较和交换
    }
}
